package macaddr

import (
	"encoding/json"
	"fmt"
)

// String 格式化成字符串
func (m MAC) String() string {
	return m.ToHuaweiStyle()
}

// MarshalJSON implements the interface MarshalJSON for json.Marshal.
func (m MAC) MarshalJSON() ([]byte, error) {
	return json.Marshal(m.String())
}

// UnmarshalJSON implements the interface UnmarshalJSON for json.Unmarshal.
func (m MAC) UnmarshalJSON(b []byte) error {
	var s string
	if err := json.Unmarshal(b, &s); err != nil {
		return err
	}

	m = Parse(s)

	return nil
}

// ToHuaweiStyle 格式化为 xxxx-xxxx-xxxx 风格的字符串
func (m MAC) ToHuaweiStyle() string {
	if len(m) == 6 {
		return fmt.Sprintf("%02x%02x-%02x%02x-%02x%02x", m[0], m[1], m[2], m[3], m[4], m[5])
	}
	return ""
}

// ToCiscoStyle 格式化为 xxxx.xxxx.xxxx 风格的字符串
func (m MAC) ToCiscoStyle() string {
	if len(m) == 6 {
		return fmt.Sprintf("%02x%02x.%02x%02x.%02x%02x", m[0], m[1], m[2], m[3], m[4], m[5])
	}
	return ""
}
